//chargement de la page

//alert('ceci est un \n test !');

// utilisation d'une matrice pour stocker les couleurs et chiffres
var matrix = {
		color:	[		["blank","blank","blank","blank"],
						["blank","blank","blank","blank"],
						["blank","blank","blank","blank"],
						["blank","blank","blank","blank"],
						["blank","blank","blank","blank"]
					],

		nb:	 	[		[0,0,0,0],
						[0,0,0,0],
						[0,0,0,0],
						[0,0,0,0],
						[0,0,0,0]
					],
		
		locked:	 	[	[false,false,false,false],
						[false,false,false,false],
						[false,false,false,false],
						[false,false,false,false],
						[false,false,false,false]
					],
				};

var selectedbox = false;

var sound = true;

function soundactivate() {
if (sound == false) {
sound = true;
document.getElementsByTagName("img")['volume'].src = imgvolon
}
else {
sound = false;
document.getElementsByTagName("img")['volume'].src = imgvoloff;}

};

function startgame() {
document.getElementsByTagName("input")['score'].value = score;

lockdices();

//Vérification si la grille est toute remplie	
if (
(matrix.nb[1][0] != 0) &&
(matrix.nb[1][1] != 0) &&
(matrix.nb[1][2] != 0) &&
(matrix.nb[1][3] != 0) &&
(matrix.nb[2][0] != 0) &&
(matrix.nb[2][1] != 0) &&
(matrix.nb[2][2] != 0) &&
(matrix.nb[2][3] != 0) &&
(matrix.nb[3][0] != 0) &&
(matrix.nb[3][1] != 0) &&
(matrix.nb[3][2] != 0) &&
(matrix.nb[3][3] != 0) &&
(matrix.nb[4][0] != 0) &&
(matrix.nb[4][1] != 0) &&
(matrix.nb[4][2] != 0) &&
(matrix.nb[4][3] != 0)) {
	alert('Game Over ! - Your score : '+ score)
score = 0;
document.getElementsByTagName("input")['score'].value = score;
resetmatrix();
	}
	
else {
if ((matrix.nb[0][0] == 0) && (matrix.nb[0][1] == 0) && (matrix.nb[0][2] == 0) && (matrix.nb[0][3] == 0)) {

    pioche();
	}
}
	
};


function lockdices() {
var locknumber = 0;
	for (i=1;i<=4;i++)	{
		for (j=0;j<=3;j++) 	{
			if ((matrix.nb[i][j] != 0) && (matrix.locked[i][j] == false)) {
				matrix.locked[i][j] = true;
				//lockingdice('box'+[i]+[j]);
				lockingdice(i,j);
				locknumber=locknumber+1;
				
									  }
						 	}
						}
						
if (locknumber != 0) {						
check('row',1);
check('row',2);
check('row',3);
check('row',4);
check('column',0);
check('column',1);
check('column',2);
check('column',3);
check('diag',null);	
check('diag2',null);
check('square',1);
check('square',2);
check('square',3);
check('square',4);
check('square',5);
check('square',6);
check('square',7);
check('square',8);
check('square',9);						
}					
					};	
			
function pioche() {

for (i=0;i<=3;i++)	{

								matrix.nb[0][i] = (Math.floor(Math.random() * (4 - 1 + 1) + 1));
								
								var choixcouleur = (Math.floor(Math.random() * (4 - 1 + 1) + 1));

								if (choixcouleur == 1) {
								matrix.color[0][i] = 'purple'
								}

								else if (choixcouleur == 2) {
								matrix.color[0][i] = 'yellow'
								}

								else if (choixcouleur == 3) {
								matrix.color[0][i] = 'brown'
								}

								else if (choixcouleur == 4) {
								matrix.color[0][i] = 'green'
								}

								document.gameform['box'+[0]+[i]].src = 'images/'+matrix.color[0][i]+'_'+matrix.nb[0][i]+'.png';
							};

};


sdicenb=0;
sdicecolor='blank';

oldboxrow=null;
oldboxcolumn=null;
wrongmove = false;

function assign(row,column,setwrongmove,notstarted) {
wrongmove = setwrongmove;
	
	if ((matrix.nb[row][column] != 0) && (selectedbox == true)) {
    selectedbox = false;
    wrongmove = true;

		if (matrix.locked[row][column] == false) {
		dragleavedice(row,column);
		}
    
		if (sound == true) {
		var mysound = new Audio("sounds/bad.ogg");
		mysound.load();
		mysound.play()	
		}
    
	}	

	//si le dé sélectionné est présent, que la sélection n'est pas encore faite, qu'un mauvais mouvement n'a pas été fait et que le dé n'est pas verrouillé
	if ((matrix.nb[row][column] != 0) && (selectedbox == false) && (wrongmove == false) && (matrix.locked[row][column] == false)) {
		// on indique qu'un dé est sélectionné
		selectedbox = true;
		// on enregistre dans nos variables la couleur et le numéro du dé sélectionné
		sdicecolor = matrix.color[row][column];
		sdicenb   = matrix.nb[row][column];

		oldboxrow = row;
		oldboxcolumn = column;
		
		wrongmove = false;
		
		if (sound == true) {
		var mysound = new Audio("sounds/select.ogg");
		mysound.load();
		mysound.play()	
		}

		}

	//si le dé n'est pas présent, et que la sélection est faite
	if ((matrix.nb[row][column] == 0) && (selectedbox == true)) {

	   // on remet la valeur par défaut dans le slot correspondant
		matrix.color[oldboxrow][oldboxcolumn] = 'blank';
		matrix.nb[oldboxrow][oldboxcolumn] = 0;

   	// le slot choisi devient vide
   	document.gameform['box'+[oldboxrow]+[oldboxcolumn]].src = imgempty;

		// on indique la nouvelle valeur à entrer dans la matrice
		matrix.color[row][column] = sdicecolor;
		matrix.nb[row][column] = sdicenb;


		// la grille reçoit dans la bonne case la valeur
		document.gameform['box'+[row]+[column]].src = 'images/'+sdicecolor+'_'+sdicenb+'.png';
		dragleavedice(row,column);

		// on indique que le slot n'est plus sélectionné
		selectedbox = false;
		wrongmove = false;
		
		if (sound == true) {
		var mysound = new Audio("sounds/put.ogg");
		mysound.load();
		mysound.play()		
		}

		
	}
	
};

function checkmatrix() {
alert(
'Slots dispo : \n' +
matrix.color[0][0] + matrix.nb[0][0] + ' - ' +
matrix.color[0][1] + matrix.nb[0][1] + ' - ' +
matrix.color[0][2] + matrix.nb[0][2] + ' - ' +
matrix.color[0][3] + matrix.nb[0][3] + '\n' +
'grille : \n' +
matrix.color[1][0] + matrix.nb[1][0] + ' - ' +
matrix.color[1][1] + matrix.nb[1][1] + ' - ' +
matrix.color[1][2] + matrix.nb[1][2] + ' - ' +
matrix.color[1][3] + matrix.nb[1][3] + '\n' +
matrix.color[2][0] + matrix.nb[2][0] + ' - ' +
matrix.color[2][1] + matrix.nb[2][1] + ' - ' +
matrix.color[2][2] + matrix.nb[2][2] + ' - ' +
matrix.color[2][3] + matrix.nb[2][3] + '\n' +
matrix.color[3][0] + matrix.nb[3][0] + ' - ' +
matrix.color[3][1] + matrix.nb[3][1] + ' - ' +
matrix.color[3][2] + matrix.nb[3][2] + ' - ' +
matrix.color[3][3] + matrix.nb[3][3] + '\n' +
matrix.color[4][0] + matrix.nb[3][0] + ' - ' +
matrix.color[4][1] + matrix.nb[3][1] + ' - ' +
matrix.color[4][2] + matrix.nb[3][2] + ' - ' +
matrix.color[4][3] + matrix.nb[3][3] + '\n'
);
};

function resetgame() {
resetmatrix();
};

function resetmatrix() {
for (i=0;i<=4;i++)	{
	for (j=0;j<=3;j++) 	{
									matrix.color[i][j] = 'blank'
									matrix.nb[i][j] = 0
									matrix.locked[i][j] = false
									document.gameform['box'+[i]+[j]].src = imgempty;
									dragleavedice(i,j);
							 	}
							};
if (sound == true) {
	var mysound = new Audio("sounds/reset.ogg");
	mysound.load();
	mysound.play()
}
}

function dragenterdice(row,column) {
	if (matrix.locked[row][column] == false) {
		document.gameform['box'+row+column].style.border='solid #53BF4B 2px';
		document.gameform['box'+row+column].style.borderRadius='8px';
		document.gameform['box'+row+column].style.MozBorderRadius='8px';
		document.gameform['box'+row+column].style.WebkitBorderRadius='8px';
	}
}

function dragleavedice(row,column) {
	if (matrix.locked[row][column] == false) {
		document.gameform['box'+row+column].style.border='solid transparent 2px';
		document.gameform['box'+row+column].style.borderRadius='8px';
		document.gameform['box'+row+column].style.MozBorderRadius='8px';
		document.gameform['box'+row+column].style.WebkitBorderRadius='8px';
	}
}

function lockingdice(row,column) {
	document.gameform['box'+row+column].style.border='dashed black 2px';
	document.gameform['box'+row+column].style.borderRadius='8px';
	document.gameform['box'+row+column].style.MozBorderRadius='8px';
	document.gameform['box'+row+column].style.WebkitBorderRadius='8px';
}


